Pourquoi s’infliger cette douleur ?
Julien Lenormand
TODO : * soundboard
Julien Lenormand
Ingénieur informatique
Pythonista depuis ~2009
J’ai répondu en 2022 à une offre d’emploi pour faire du Python …
2 !
Il nous a quitté il y a presque 5 ans …
😢
Python démarre en Décembre 1989
rendu public en 1991
2.0 en 2000 (What’s new ?) :
Et les versions s’enchaînent jusqu’à …
Par rapport à la 2.x
(PEP 3100) :
class
esprint
!=
plutôt que
<>
long
raw_input
with
set
et dict
literalssuper()
sans paramètrenonlocal
Jusqu’à la 3.13
:
OrderedDict
, pure-Python import
, meilleur
str
des floatargparse
, concurrent.futures
yield from
, faulthandler
,
unittest.mock
, venv
pip
inclus, asyncio
, enum
,
pathlib
*
et
**
)async
/await
, dataclasses
,
ordered dict
par défaut:=
, =
des
f-stringsstr.removepre/suffix
, stdlib avec des type
hintstyping
tomllib
, encore du typing
,
deprecationstyping
typing
, removals𝑼𝑵𝑰𝑪𝑶𝑫𝑬
L’absolu minimum que chaque dev doit vraiment, absolument savoir à propos d’Unicode et des jeux de caractères (pas d’excuses !)
Arrêter avec l’ASCII (cf)
TODO musique de sirène d’alarme, de tirs
faible adoption
ça marche, pourquoi payer pour changer ?
Des efforts sur la compatibilité entre 2.6/7 et 3.x :
u""
from __future__ import
:
division
, absolute_import
,
print_function
, unicode_literals
backports
: abc
,
csv
, inspect
, os
,
range
, statistics
, …Des outils pour assister à la migration :
2to3
: transpile du 2.x en 3.xpython-modernize
: comme 2to3 mais en 3.x compatible 2.xlib3to6
:
transpile du 3.x en 2.7future
:
futurize
/pasteurize
: transpile du x.y en
3.x compatible 2.x3to2
: pareil que
lib3to6six
: couche de
compatibiliténine
:
comme six, mais avec le nommage 3.xeight
:
polyfills automatiquespy3c
:
couche de compatibilité pour l’API Cpylint --py3k
: warnings sur le 2.x-onlypython2.6 -3
: warnings sur le 2.x-onlyDes guides :
Des listes :
pas de spoiler : Python3 a gagné, Python2 a été sunset
Ok, bring in the lawyers. - gvanrossum
TODO
début en python3 jusqu’en 2022 Odoo, framework, pas de si grandes différences mais ensuite client qui fait du nucléaire appli en 2.6, sans test auto, avec des hacks de threads et subprocess test manuel uniquement pas de logging, pas de debuggeur
Should I use Python 2 or Python 3 for my development activity?
Python 3 is strongly recommended for any new development.
Et ça s’inscrit dans la raison d’être de Python :
Principales, en plus des liens dans les slides :
Images :
Web :
tox
TODO
?
Julien Lenormand
Dev / DevOps / Craft / Talk
LinkedIn/julien-lenormand
Je fais encore du Python2 en 2024…
Et c’est infernal ! Mais pourquoi s’infliger cette douleur ? Et au fait, qu’est-ce que ça change ?
Je voudrais vous partager ma frustration de devoir encore maintenir du code dans une version dépréciée du langage (c’est-à-dire vous vanter toutes les bonnes choses de Python3 !). Et ce sera l’occasion de faire un petit retour sur les origines du Python que nous aimons tant, son héritage qui perdure encore aujourd’hui (pour le meilleur et parfois pour le pire !).
Vous ferez gaffe à la prochaine offre d’emploi qui ne précise pas la version de Python ! :D